﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace PetSystem
{
    public partial class frmPlanos : Form
    {
        public frmPlanos()
        {
            InitializeComponent();
        }

        private void btnSalvar_Click(object sender, EventArgs e)
        {
            if (txtNome.Text.Trim() != "")
            {
                Planos plano = new Planos();
                plano.Nome = txtNome.Text.Trim();
                plano.Descricao = txtDescricao.Text.Trim();
                DAO DAO = new DAO();
                #region Salva plano no banco de dados
                if (this.Text.Contains("Novo"))
                {
                    try
                    {
                        #region Insere novo Plano
                        DAO.IncluirPlano(plano);
                        Text = "Editar Plano " + DAO.UltimoPlanoCadastrado().ToString();
                        MessageBox.Show("Plano " + DAO.UltimoPlanoCadastrado().ToString() + " cadastrado", "Plano Cadastrado", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                        Planos.AtualizaListaDePlanos();
                        #endregion
                    }
                    catch (Exception ex)
                    {
                        #region Tratamento de erro ao inserir novo plano
                        string mensagem;
                        if (ex.Message.ToString().Contains("valores duplicados no índice"))
                        {
                            mensagem = "Já existe um plano chamado '" + txtNome.Text.Trim() + "', favor escolher outro nome.";
                        }
                        else
                        {
                            mensagem = ex.Message.ToString();
                        }
                        MessageBox.Show("Erro ao salvar plano:\n\n " + mensagem, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                        #endregion
                    }
                }
                else
                {
                    try
                    {
                        #region Atualiza Planos
                        plano.codigo = int.Parse(Text.Substring(13, Text.Length - 13));
                        DAO.AtualizaPlano(plano);
                        MessageBox.Show("Plano " + DAO.UltimoPlanoCadastrado().ToString() + " atualizado", "Plano Cadastrado", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                        Planos.AtualizaListaDePlanos();
                        #endregion
                    }
                    catch (Exception ex)
                    {
                        #region Tratamento de erro ao atualizar plano
                        string mensagem;
                        if (ex.Message.ToString().Contains("valores duplicados no índice"))
                        {
                            mensagem = "Já existe um plano chamado '" + txtNome.Text.Trim() + "', favor escolher outro nome.";
                        }
                        else
                        {
                            mensagem = ex.Message.ToString();
                        }
                        MessageBox.Show("Erro ao atualizar plano:\n\n " + mensagem, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                        #endregion
                    }
                }
                #endregion
            }
            else
            {
                MessageBox.Show("Digite o nome o plano.", "", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
            }
        }

        private void frmPlanos_Load(object sender, EventArgs e)
        {
            if (Text.Contains("Editar"))
            {
                DAO DAo = new DAO();
                Planos plano = new Planos();
                plano = DAo.ObterPlano(Text.Substring(13, Text.Length - 13));
                this.txtNome.Text = plano.Nome.Trim();
                this.txtDescricao.Text = plano.Descricao.Trim();
            }
        }

        private void btnSair_Click(object sender, EventArgs e)
        {
            if (txtNome.Text.Trim() != "" || txtDescricao.Text.Trim() != "")
            {
                string Mensagem = "Deseja sair sem salvar?";
                string Titulo = "Sair";
                MessageBoxButtons Botoes = MessageBoxButtons.YesNo;
                DialogResult escolhaUsuario;
                escolhaUsuario = MessageBox.Show(Mensagem, Titulo, Botoes);
                if (escolhaUsuario == System.Windows.Forms.DialogResult.Yes)
                {
                    this.Close();
                }
            }
            else
            {
                Close();
            }
        }

        private void btnSalvarSair_Click(object sender, EventArgs e)
        {
            if (txtNome.Text.Trim() != "")
            {
                Planos plano = new Planos();
                plano.Nome = txtNome.Text.Trim();
                plano.Descricao = txtDescricao.Text.Trim();
                DAO DAO = new DAO();
                #region Salva plano no banco de dados
                if (this.Text.Contains("Novo"))
                {
                    try
                    {
                        #region Insere novo Plano
                        DAO.IncluirPlano(plano);
                        Text = "Editar Plano " + DAO.UltimoPlanoCadastrado().ToString();
                        MessageBox.Show("Plano " + DAO.UltimoPlanoCadastrado().ToString() + " cadastrado", "Plano Cadastrado", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                        Planos.AtualizaListaDePlanos();
                        Close();
                        #endregion
                    }
                    catch (Exception ex)
                    {
                        #region Tratamento de erro ao inserir novo plano
                        string mensagem;
                        if (ex.Message.ToString().Contains("valores duplicados no índice"))
                        {
                            mensagem = "Já existe um plano chamado '" + txtNome.Text.Trim() + "', favor escolher outro nome.";
                        }
                        else
                        {
                            mensagem = ex.Message.ToString();
                        }
                        MessageBox.Show("Erro ao salvar plano:\n\n " + mensagem, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                        #endregion
                    }
                }
                else
                {
                    try
                    {
                        #region Atualiza Planos
                        plano.codigo = int.Parse(Text.Substring(13, Text.Length - 13));
                        DAO.AtualizaPlano(plano);
                        MessageBox.Show("Plano " + DAO.UltimoPlanoCadastrado().ToString() + " atualizado", "Plano Cadastrado", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                        Planos.AtualizaListaDePlanos();
                        Close();
                        #endregion
                    }
                    catch (Exception ex)
                    {
                        #region Tratamento de erro ao atualizar plano
                        string mensagem;
                        if (ex.Message.ToString().Contains("valores duplicados no índice"))
                        {
                            mensagem = "Já existe um plano chamado '" + txtNome.Text.Trim() + "', favor escolher outro nome.";
                        }
                        else
                        {
                            mensagem = ex.Message.ToString();
                        }
                        MessageBox.Show("Erro ao atualizar plano:\n\n " + mensagem, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                        #endregion
                    }
                }
                #endregion
            }
            else
            {
                MessageBox.Show("Digite o nome o plano.", "", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
            }
        }
    }
}
